import request from "@/utils/request";
import {LpsOrderCdjgPageVO} from "@/api/system/lps-order-cdjg";
import {LpsOrderCdjgCPageVO} from "@/api/system/lps-order-cdjg-c";
import {LpsOrderPjPageVO} from "@/api/system/lps-order-pj";
import {LpsOrderXcpPageVO} from "@/api/system/lps-order-xcp";
import {LpsOrderXianPageVO} from "@/api/system/lps-order-xian";
import {LpsOrderYlPageVO} from "@/api/system/lps-order-yl";
import {LpsOrderLjPageVO} from "@/api/system/lps-order-lj";
import {LpsOrderFsPageVO} from "@/api/system/lps-order-fs";

const LPSORDER_BASE_URL = "/api/v1/lpsOrders";

const LpsOrderAPI = {
    /** 获取莱普森订单分页数据 */
    getPage(queryParams?: LpsOrderPageQuery) {
        return request<any, PageResult<LpsOrderPageVO[]>>({
            url: `${LPSORDER_BASE_URL}/page`,
            method: "get",
            params: queryParams,
        });
    },
    /**
     * 获取莱普森订单表单数据
     *
     * @param id 莱普森订单ID
     * @returns 莱普森订单表单数据
     */
    getFormData(id: number) {
        return request<any, LpsOrderForm>({
            url: `${LPSORDER_BASE_URL}/${id}/form`,
            method: "get",
        });
    },

    /** 添加莱普森订单*/
    add(data: LpsOrderForm) {
        return request({
            url: `${LPSORDER_BASE_URL}`,
            method: "post",
            data: data,
        });
    },

    /**
     * 更新莱普森订单
     *
     * @param id 莱普森订单ID
     * @param data 莱普森订单表单数据
     */
     update(id: number, data: LpsOrderForm) {
        return request({
            url: `${LPSORDER_BASE_URL}/${id}`,
            method: "put",
            data: data,
        });
    },

    /**
     * 批量删除莱普森订单，多个以英文逗号(,)分割
     *
     * @param ids 莱普森订单ID字符串，多个以英文逗号(,)分割
     */
     deleteByIds(ids: string) {
        return request({
            url: `${LPSORDER_BASE_URL}/${ids}`,
            method: "delete",
        });
    },

    /**
     * 根据ids下载
     * @param ids
     */
    downloadByIds(queryParams?: LpsOrderPageQuery) {
        return request({
            url: `${LPSORDER_BASE_URL}/download`,
            method: "get",
            params: queryParams,
            responseType: "blob",
        });
    },

    /**
     * 导入（支持多文件上传）
     * @param deptId 部门ID
     * @param files 多个文件
     */
    import(deptId: number, files: File[]) {
        const formData = new FormData();
        files.forEach(file => {
            formData.append("files", file); // 可以多次添加同名字段
        });
        return request<any, LpsOrderImportExcelResultVO>({
            url: `${LPSORDER_BASE_URL}/import`,
            method: "post",
            params: { deptId: deptId },
            data: formData,
            headers: {
                "Content-Type": "multipart/form-data",
            },
        });
    }
}

export default LpsOrderAPI;


/** 莱普森订单导入响应对象 */
export interface LpsOrderImportExcelResultVO {
    /** 主键 */
    id?:  number;
    /** 文件名称 */
    fileName?:  string;
    /** 备注 */
    remark?:  string;
    /** 触动机构处理列表 */
    cdjgList?: LpsOrderCdjgPageVO[];
    /** 触动机构处理C列表 */
    cdjgCList?: LpsOrderCdjgCPageVO[];
    /** 配件处理列表 */
    pjList?: LpsOrderPjPageVO[];
    /** 新产品处理列表 */
    xcpList?: LpsOrderXcpPageVO[];
    /** 新产品处理列表 */
    xianList?: LpsOrderXianPageVO[];
    /**  linearly 处理列表 */
    ylList?: LpsOrderYlPageVO[];
    /**  linearly 处理列表 */
    ljList?: LpsOrderLjPageVO[];

    fsList?: LpsOrderFsPageVO[];
}

/** 莱普森订单分页查询参数 */
export interface LpsOrderPageQuery extends PageQuery {
    ids?: string;
    /** 部门id */
    deptId?:  number;
    /** 用户名称 */
    userName?: string;
    /** 文件名称 */
    fileName?: string;
    /** 创建时间 */
    createTime?: [string, string];
}

/** 莱普森订单表单对象 */
export interface LpsOrderForm {
    /** 主键 */
    id?:  number;
    /** 文件名称 */
    fileName?:  string;
    /** 备注 */
    remark?:  string;
    /** 触动机构处理列表 */
    cdjgList?: LpsOrderCdjgPageVO[];
    /** 触动机构处理C列表 */
    cdjgCList?: LpsOrderCdjgCPageVO[];
    /** 配件处理列表 */
    pjList?: LpsOrderPjPageVO[];
    /** 新产品处理列表 */
    xcpList?: LpsOrderXcpPageVO[];
    /** 新产品处理列表 */
    xianList?: LpsOrderXianPageVO[];
    /**  linearly 处理列表 */
    ylList?: LpsOrderYlPageVO[];
    /**  linearly 处理列表 */
    ljList?: LpsOrderLjPageVO[];
}

/** 莱普森订单分页对象 */
export interface LpsOrderPageVO {
    /** 用户id */
    userId?: number;
    /** 用户名称 */
    userName?: string;
    /** 更新用户id */
    updateUserId?: number;
    /** 更新用户名称 */
    updateUserName?: string;
    /** 部门id */
    deptId?: number;
    /** 部门名称 */
    deptName?: string;
    /** 文件名称 */
    fileName?: string;
    /** 文件路径 */
    filePath?: string;
    /** 备注 */
    remark?: string;
    /** 创建时间 */
    createTime?: Date;
    /** 创建人ID */
    createBy?: number;
    /** 更新时间 */
    updateTime?: Date;
    /** 修改人ID */
    updateBy?: number;
}

